AlteryxでRツールの文字化けをなんとかしたい!
こんにちは、小澤です。
AlteryxのRツールを使っていると、エラーなどシステムから返ってくるメッセージが文字化けしてしまうことがあります。
Rツールを使ってる人はそんなに多くないと思うのですが、Alteryxでは標準で入っているマクロとして実装されたツールのなかにRツールを使ったものがいくつかあります。 そのため、それらのツールの結果が文字化けして、エラーが出た際になんで怒られてるのかわからないといった状況が発生します。
今回は、ここをなんとか乗り越える方法を見ていきましょう
そもそも原因は何?
この原因はWindows側の言語設定と、Alteryx, Rそれぞれが想定する文字コードという二重の問題があります。 Rツールを使った際の動きとしては
- AlteryxがRを呼び出し
- 呼び出されたRが渡された処理を実行
- Rの処理終了後、Alteryxが結果を受け取って次の処理に進む
となるのですが、この際
- Rは国際化対応によってシステムからのメッセージはOSの環境に合わせた言語にため、日本語環境では日本語でメッセージを出力する
- Windows版のRは日本語環境での文字コードがShift_JISとなっている(Linux/MacはUTF-8)
- Alteryxではメッセージ表示にUTF-8を想定しているため文字化けする
という流れになっています。
これに対応する方法の1つとして、Rツール内の最初に以下のような処理を記述してR側が利用する言語として英語を選択してしまうというやり方があります。
Sys.setenv(LANGUAGE="En")
これで無事、どんなエラーが出ているのか確認できるようになりました。
書き足せないときは?
さて、これで問題は無事解決されました...とはいきません。 冒頭に書いた通り、内部でRツールを使っているツールを使いたいときにこれじゃあ対応できません。 1つ1つマクロを開いてRツールの先頭に記述 -> 保存してそれを使えるようにする、とやっていては日が暮れてしまいます。
そこで明示的に書かなくてもRツールを使う際に常にこの設定が反映されるようにしようと思います。 その方法はすごく簡単です。
まず、以下のファイルを用意してください。
C:\Users\<自分のユーザ名>\Documents\.Rprofile
このファイルに先ほどと同じものを記述します。
Sys.setenv(LANGUAGE="En")
以上です! ね、簡単でしょ?
この.Rprofileというファイルは、Rが起動したときに自動的に最初に実行してくれる処理を記述するためのものです。 今回のように常にこの設定を適用したいというときに、そういった処理を行うRのコードを記述しておくことで毎回その設定が反映されてくれます。
これで、Rツールを利用しているツールの文字化けとも無縁の関係を築くことができました! めでたしめでたし!!
おわりに
今回は、AlteryxでRツールのメッセージ出力が文字化けしてしまう問題の対処法を紹介しました。 AlteryxとRで文字コードが件に関しては他にもいくつか問題を抱えているのですが、それはまたおいおい解決策を探していきます。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。